package trabalhoprog3;

import java.util.ArrayList;
import java.util.Scanner;
import static trabalhoprog3.TrabalhoProg3.atualizarPrecoDoItem;
import static trabalhoprog3.TrabalhoProg3.cadastrarClienteViaTeclado;
import static trabalhoprog3.TrabalhoProg3.configurarData;
import static trabalhoprog3.TrabalhoProg3.listaDeClientes;
import static trabalhoprog3.TrabalhoProg3.quantidadeDeClientes;
import static trabalhoprog3.TrabalhoProg3.quantidadeDePedidosEmAberto;
import static trabalhoprog3.TrabalhoProg3.quantidadeDePedidosEncerrados;
import static trabalhoprog3.TrabalhoProg3.reservarUnidades;
import static trabalhoprog3.TrabalhoProg3.retornarClientepeloCPF;
import static trabalhoprog3.TrabalhoProg3.retornarDataAtual;
import static trabalhoprog3.TrabalhoProg3.retornarItemDadoNome;
import static trabalhoprog3.TrabalhoProg3.verCadastroDoClienteNoSistemaPorCPF;
import static trabalhoprog3.TrabalhoProg3.verificarDisponibilidadeDoItem;

public class Pedido{
    ArrayList<Item> itensPedidos = new ArrayList<Item>();
    Instante solicitacao;
    Instante fechamento;
    int quantidadeDeItensPedidos=0;
    Cliente clienteSolicitador;
    int numeroDoPedido;
    
    protected Cliente selecionarCliente(Cliente clienteSolicitador){
        Scanner leitor = new Scanner(System.in);
        String cpf;
        
        System.out.print("\nDigite o C.P.F. do cliente\n\n");
        cpf = leitor.nextLine();
        
        if(!verCadastroDoClienteNoSistemaPorCPF(cpf)){
            System.out.print("\nEste Cliente não está cadastrado no sistema. Faremos o cadastro dele\n\n\n");
            cadastrarClienteViaTeclado();
            clienteSolicitador = listaDeClientes.get(quantidadeDeClientes-1);
        }
        else{
            clienteSolicitador = retornarClientepeloCPF(cpf);
        }
        
        return clienteSolicitador;
    }
        
    protected Item selecionarItem(){
        Scanner leitor = new Scanner(System.in);
        String nomeDoItem;
        
        System.out.print("Digite o nome do Item a ser\nadicionado ao pedido:    ");
        nomeDoItem = leitor.nextLine();
        while(!verificarDisponibilidadeDoItem(nomeDoItem)){
            System.out.print("Ítem não cadastrado. Digite novamente.\n\n"); 
            nomeDoItem = leitor.nextLine();
        }
        
        return retornarItemDadoNome(nomeDoItem);
    }   
        
    protected ArrayList<Item> selecionarItens(ArrayList<Item> itensPedidos){
        Scanner leitor = new Scanner(System.in);
        
        do{
            itensPedidos.add(quantidadeDeItensPedidos, selecionarItem());
            System.out.print("Digite a número de unidades do item que desejas:   ");
            itensPedidos.get(quantidadeDeItensPedidos).quantidadeReservada = leitor.nextInt(); //atualiza a quantidade de unidades
            
            int quantidade = itensPedidos.get(quantidadeDeItensPedidos).quantidadeReservada;
            String nome = itensPedidos.get(quantidadeDeItensPedidos).nome;
            
            reservarUnidades(quantidade,nome);
            quantidadeDeItensPedidos++;
            
            System.out.print("\n\nDeseja pedir mais algum ítem?\nDigite y se sim ou qualquer outra tecla caso contrário:   ");
        }while(leitor.nextLine().matches("y"));
        
        return itensPedidos;
    }
    
    protected Instante setarDatadeSolicitacao(Instante solicitacao){
        solicitacao = retornarDataAtual();
        return solicitacao;
    }
    
    protected Instante setarDatadeFechamento(Instante fechamento){
        fechamento =  configurarData();
        return fechamento;
    }
    
    protected int inserirNumeroDopedido(int numeroDoPedido){
        numeroDoPedido = quantidadeDePedidosEmAberto + quantidadeDePedidosEncerrados + 1;
        return numeroDoPedido;
    }
    
    
    protected int retornarPosicaoDoitemPeloNome(String nomeDoItem,ArrayList<Item> listaDeItens){
        for(int i=0;i < listaDeItens.size();i++){
            if(listaDeItens.get(i).nome.equals(nomeDoItem)){
                return i;
            }
        }
        return -1;
    }
}
